Skip to content

Development - #46

Merged
ACFHarbinger merged 72 commits into
mainfrom
development
Aug 9, 2026
Merged

Development#46
ACFHarbinger merged 72 commits into
mainfrom
development

Conversation

@ACFHarbinger

Copy link
Copy Markdown
Owner

No description provided.

These files came from a generic polyglot project template
(Tauri-App-Template) and assumed a multi-language monorepo with
Python/Kotlin/Java/Rust/Go/C++ modules, cloud infra, and multi-host
CI. This repo is a single-language Next.js/React/TypeScript static
site deployed to GitHub Pages, plus a small Python/uv notebooks
workspace for report research — so the irrelevant pieces are removed:

- .forgejo/, .gitea/, .gitlab/: not hosted on those platforms
- cloud/, infra/: no cloud/container infra for a static export site
- git/: GitHub Project board automation and generic template CONTRIBUTING
- docs/{ARCHITECTURE,BENCHMARKS,DEPENDENCIES,DEPENDENCY_POLICY,
  DEVELOPMENT,DOCUMENTATION_STANDARDS,GLOSSARY,TESTING,TROUBLESHOOTING}.md,
  docs/adr/, docs/moon/{ROADMAP,CHANGELOG}.md, docs/moon/roadmaps/:
  described modules/roadmaps that don't exist here
- .agent/rules/{go,kotlin,java,cpp,rust,ai_ml}.md,
  .agent/workflows/{rust,data_eng,ai_ml,deployment_ops}.md,
  .agent/skills/add-language-module.md,
  .agent/prompts/cli_generation.md: languages/workflows unused here

The two genuine research write-ups under docs/moon/research and
docs/moon/reports move to docs/research/ since they're real content
about this project, not template placeholders.
- ci.yml: replace the polyglot lint/test/build matrix with lint + tsc
  + jest + cypress + a next build check, plus a light ruff pass over
  notebooks/.
- security.yml: npm audit + pip-audit (uv) for notebooks/, drop
  cargo-audit.
- Remove agent_sync.yml (GitHub Project board automation tied to the
  deleted git/ scripts) and docs.yml (no MkDocs site here).
- Issue/PR templates: swap the language-module dropdown for the
  site's actual content areas (posts/reports/projects/tools/etc).
- dependabot.yml: add npm and uv (notebooks/) ecosystems alongside
  the existing github-actions one; bump cadence to weekly.
- .pre-commit-config.yaml: eslint/tsc for the site, ruff/mypy for
  notebooks/, drop the other five language toolchains.
- .devcontainer: Node + Python(uv) only, drop Rust/Go/JVM toolchains.
- pyproject.toml: fix license file reference (LICENSE, not LICENSE.md).
AGENTS.md, the TS/React and Python rule files, the build-and-test and
debug-crash skills, and the master_context/architecture_analysis/
documentation_update/feature_implementation prompts all described a
generic polyglot template (multi-language modules, Vitest, Tauri,
MkDocs, just recipes). Rewritten to reflect what's actually here: a
static-export Next.js/React/TypeScript site with Jest+Cypress tests,
and a small notebooks/ Python-uv workspace for report research.

Also swapped the domain-specific examples in the six subagent
delegation protocol files (Rust/C++ refactors, PySide6 GUIs, RL reward
functions, OpenCV bindings) for ones grounded in this repo — drafting
report prose, reviewing notebook analysis code, refactoring React
components — while keeping the PCVRP example where it already matched
an existing report.
Not part of the intended cleanup; unrelated content that ended up
staged alongside the .agent/ changes.
Replace the plain tech list and course-template boilerplate with a
badge-based header (stack + CI/deploy status + license), a project
structure overview, and concrete getting-started/testing/deployment
instructions, following the style of Image-Toolkit/nglab/WSmart-Route.
Restored copies of .forgejo/, .gitea/, .github/, .gitlab/, and git/
still described a polyglot python/typescript/kotlin/java/rust/go/cpp
project and referenced the source template by name. Rewritten so every
file reflects only this repository:

- ci.yml (all three CI hosts) and .gitlab-ci.yml: lint/typecheck/jest/
  cypress/build for the Next.js site, ruff for notebooks/ — no
  cargo/gradle/mvn/cmake/go steps.
- security.yml: npm audit + pip-audit only.
- benchmark.yml: Lighthouse against the static export, no explanatory
  commentary about what it replaces.
- docs.yml / docs-link-check: a real lychee link-check job over docs/,
  not a manual no-op with a "restore this later" comment.
- agent_sync.yml / agent-sync.yml / the sync stage in .gitlab-ci.yml:
  same real job on every host — it only ever talks to GitHub's
  Projects (V2) API regardless of which CI runs it, so the
  "not portable to Forgejo/Gitea/GitLab" guard was wrong and is gone.
- Issue/PR/MR templates: content-area dropdown instead of a
  language-module dropdown, on every host.
- git/CONTRIBUTING.md, git/README.md, git/config/*, git/hooks/*,
  git/scripts/*: rewritten/restored with no template name, no
  "ported from <other repo>" attribution, and a component label set
  (site/content/notebooks/ci-automation/docs) that matches this repo
  instead of one label per unused language.

None of this repo's directories were removed. A handful of files with
zero applicability to this project (per-language rule/roadmap files,
the template's own dev-tool roadmap) were deleted outright rather than
kept with a "not applicable" banner, per explicit instruction.
- git/pyproject.toml: declare the git scripts' actual runtime deps
  (pyyaml, requests, google-genai) and a setuptools build so `scripts`
  is installable as a package, matching sync_backlog.py/
  check_commit_ref.py now importing agent_tools via a relative import
  (`from .agent_tools import ...`), which requires running as
  git.scripts.<module> rather than as a bare script.
- Register "git" as a uv workspace member alongside "notebooks" in the
  root pyproject.toml.
- Update every agent_sync/agent-backlog-sync CI job (GitHub, Gitea,
  Forgejo, GitLab) to `uv sync --project git` and invoke
  `python -m git.scripts.sync_backlog` instead of a direct file path.
- Update git/hooks/post-commit and post-commit.bat the same way for
  check_commit_ref.py, using `uv run --project git` from the repo root.
docs/*.md, docs/adr/0001, docs/moon/ROADMAP.md, docs/moon/CHANGELOG.md,
and three of the docs/moon/roadmaps/ files had been emptied out to
clear any remaining template content. Written fresh, describing only
this repository:

- docs/*.md: architecture, dependencies, dev setup, testing,
  troubleshooting, docs standards, glossary, benchmarks — all for the
  actual Next.js + notebooks/ + git/ stack, no leftover framing about
  what any of this used to describe.
- docs/adr/0001: restored (generic ADR practice, no template content).
- docs/moon/ROADMAP.md: now points at per-theme roadmaps instead of
  a scaffolding-adoption tracker.
- docs/moon/roadmaps/{user_interface,interactive_features,
  mathematical_optimization,machine_learning,documentation}.md:
  rewritten as a forward-looking, feature-themed roadmap for the site
  (3D/motion UI, interactive graphics, an in-browser PCVRP demo,
  client-side ML, docs upkeep), drawing on docs/moon/research/.
- cloud/aws/cfn-template.yaml, cloud/azure-pipelines/azure-pipelines.yml,
  cloud/serverless/serverless.yml: real, working configs to deploy the
  static export to AWS (S3 + CloudFront, via CloudFormation or the
  Serverless Framework) and Azure Static Web Apps, as alternatives to
  the GitHub Pages deploy this repo actually uses.
Replaced the inherited Python+Postgres+Redis backend stack with
infra that actually deploys this repo: build the Next.js static
export and serve it via nginx.

- infra/docker/: Dockerfile now does npm run build then serves out/
  via nginx (new nginx.conf); docker-compose.yml/prod.yml drop the
  db/redis services down to a single `site` service; removed
  entrypoint.sh (no database to wait for).
- infra/k8s/: Deployment/Service/Ingress renamed from
  tauri-app-template to github-pages, port 8000 -> 80, readiness
  probe points at `/`; removed the ConfigMap (nothing left to
  configure via env vars).
- infra/helm/: renamed the tauri-app-template/ chart directory to
  github-pages/ and updated Chart.yaml/values.yaml/templates to
  match; removed its ConfigMap template too.
- infra/terraform/: provisions a real aws_ecr_repository for the
  built image instead of an empty placeholder; project_name/bucket
  names updated from tauri-app-template to github-pages.
- infra/ansible/: role now installs Docker and runs the built image
  directly instead of templating a .env file for a Python app.
- Every README rewritten to describe what's actually here, with no
  "not currently used"/"dormant"/"inherited from the template"
  framing.
- Add vitest, @vitejs/plugin-react, jsdom, msw, @testing-library/user-event;
  remove jest, jest-environment-jsdom, ts-jest, @types/jest.
- vitest.config.ts: jsdom environment, @/* alias matching tsconfig,
  globals enabled, CSS processing disabled (the repo's postcss.config.js
  uses Next.js-style string plugin names Vite's loader can't resolve).
- test/vitest.setup.ts: jest-dom matchers plus MSW server lifecycle
  (see the next commit for the integration tests that use it).
- Move src/components/__tests__/*.test.tsx to test/unit/components/,
  mirroring the src/components/{layout,ui}/ layout, converting
  jest.fn()/jest.mock() to vi.fn()/vi.mock().
- package.json: test -> vitest run, test:watch -> vitest, plus new
  test:unit/test:integration scripts.

All 9 suites (25 tests) pass under `npm run test:unit`.
- layout.integration.test.tsx: mounts ClientLayoutWrapper (Header +
  Sidebar + Footer together) and verifies the theme toggle and
  localStorage persistence flow across all three.
- navigation-active-state.integration.test.tsx: verifies a pathname
  change flows through ClientLayoutWrapper's getActiveSection into the
  correct Sidebar item being marked active.
- github-profile.integration.test.ts: exercises the MSW-backed network
  layer itself (default handler, per-test override, and that a truly
  unhandled request is rejected instead of hitting the real network).

Also fixes two environment issues surfaced by these tests:
- vitest.config.ts: set environmentOptions.jsdom.url so jsdom's APIs
  that require an origin work correctly.
- test/vitest.setup.ts: Node's own built-in `localStorage` global
  (stable since Node 22) shadows jsdom's window.localStorage with a
  non-functional stub when no --localstorage-file is configured;
  replaced with a small in-memory Storage polyfill, reset between
  tests.

12 test files, 33 tests, all passing under `npm test`.
- test/cypress/e2e/*.cy.js: moved as-is (2 pre-existing failures in
  navigation.cy.js/other.cy.js predate this move, matching the stale
  failure screenshots that were committed alongside them).
- test/cypress/cypress.config.js: moved from repo root; specPattern
  now covers both e2e/ and smoke/, explicit screenshots/videos folders.
- test/cypress/smoke/: new — smoke.cy.js checks every top-level route
  renders the header/main/footer shell and the homepage logs no
  console errors; theme-toggle.cy.js checks the dark/light toggle.
- Dropped the committed cypress/screenshots/ failure artifacts and
  gitignored test/cypress/{screenshots,videos}.
- package.json: cypress:open/run/e2e/smoke scripts now `cd
  test/cypress` first — Cypress resolves --spec relative to cwd
  regardless of --config-file/--project, so that's the only way to
  point it at the moved specs.

Verified against a running `npm run dev`: 10/10 smoke tests pass,
8/10 e2e tests pass (the 2 pre-existing failures unchanged).
- CI (GitHub, Gitea, Forgejo, GitLab): run test:unit + test:integration
  instead of the old jest --ci --coverage invocation; Cypress steps use
  working-directory: test/cypress (GitHub-style action) or `cd
  test/cypress` (GitLab), since Cypress resolves spec globs relative to
  the current working directory regardless of --config-file/--project.
- tsconfig.json: add "types": ["vitest/globals"] so `tsc --noEmit`
  (used by CI and the pre-commit hook) recognizes describe/it/expect/vi
  in test files instead of erroring on every one of them.
- package.json: postbuild script symlinks out/github-pages -> . so a
  plain `serve` of the static export answers under the /github-pages
  basePath locally, the same way GitHub Pages does — needed for the
  Cypress and Lighthouse CI jobs that serve the production build.
- docs/TESTING.md, docs/DEVELOPMENT.md, docs/TROUBLESHOOTING.md,
  README.md, git/CONTRIBUTING.md, .agent/{AGENTS.md,rules/
  typescript_react.md,skills/{build-and-test,debug-crash}.md,prompts/
  feature_implementation.md}: replaced every Jest/root-cypress
  reference with the Vitest/RTL/MSW/test-cypress equivalents.
- docs/moon/CHANGELOG.md: logged the migration; docs/moon/ROADMAP.md:
  updated the S3 item; docs/moon/roadmaps/infrastructure_and_testing.md:
  filled in with what's done (Vitest migration, MSW integration tests,
  Cypress move + smoke tests, the postbuild basePath fix, CI wiring)
  and what's left (coverage reporting, two pre-existing e2e failures).
- .gitignore: test/cypress/{screenshots,videos}, *.tsbuildinfo.

Full `npm run lint && npx tsc --noEmit && npm test && npm run build`
passes.
docs/website/react/, following the pattern of the docs/website/vue
site in Project-Mobile-Fortress (a documentation portal + component
catalogue for the repo), but built from a different stack per this
project's actual needs:

- Docusaurus (classic preset) serves this repo's docs/ directly (no
  copy step — the docs-plugin's `path` points straight at ../../) plus
  a curated set of outside-docs guides (README.md, git/CONTRIBUTING.md,
  .agent/AGENTS.md) on a second plugin instance.
- TypeDoc + typedoc-plugin-markdown generates API reference for lib/'s
  exported functions/types (`npm run gen:api`), registered on the same
  docs-plugin instance as the rest of docs/ since it's physically
  nested there.
- Storybook (@storybook/react-vite) renders the real src/components/
  sources (via a site-src/ symlink, not a copy) with a dark/light
  theme toggle and Tailwind wired in for accurate styling; Next.js-only
  imports (next/image, next/link, next/navigation) get small shims
  since this runs on plain Vite.
- `npm run build` chains gen:api -> build-storybook -> docusaurus
  build -> copies the Storybook output into build/storybook/, so the
  whole dashboard ships as one static site.

Two real upstream issues surfaced and worked around, documented inline
where they're worked around and in react/README.md's "Notable
implementation gotchas":
- A Docusaurus 3.10 bug mis-resolves the webpack import for a doc
  whose docs-plugin `include` lists it under a *different* plugin
  instance's `path` than where it's physically nested — fixed by
  registering the generated API docs on the plugin instance that
  actually owns docs/ on disk.
- vite-plugin-react-docgen-typescript (Storybook's prop-table
  generator) never attaches docgen info to files outside its own
  project directory, symlink or no — every story ships hand-written
  argTypes (control + description per prop) as a working substitute,
  documented as a known limitation rather than papered over.

Also pinned lucide-react to 0.469.0 (React 19 support with the same
icon names as the main site's 0.383.0) and Vite to ^5 (the default
Vite 8 that @storybook/react-vite pulls in fails to parse JSX in a few
story files).
You were right to question it: the symlink (ln -s ../../../src
site-src) existed solely to try to get vite-plugin-react-docgen-typescript
to treat the real src/components/ files as inside this project, but it
never actually worked — docgen still skipped every component with the
symlink in place (verified before this change: 8 "not included in the
active TypeScript project" warnings either way). So it bought nothing
and just added a layer of indirection to explain.

Stories now import straight from ../../../../src/components/... with
no symlink involved. Simplified .storybook/main.ts back to a plain
alias map (no preserveSymlinks, no alias-ordering workaround needed
now that there's no @/site-src vs @ collision to avoid). Updated both
READMEs' "how it works" sections and global.d.ts's comment to match.

Verified: npm run typecheck and the full npm run build (TypeDoc ->
Storybook -> Docusaurus -> merge) both still pass.
ACFHarbinger and others added 28 commits August 8, 2026 18:02
Colocate AWS, Azure Pipelines, Firebase, and Serverless configs with the rest of infrastructure tooling under infra/.

Co-authored-by: Grok <grok@x.ai>
…rnal)

Move public-facing deployment tooling under infra/global/ (docker, k8s,
helm, terraform, ansible, cloud, wordpress) and developer-only tooling
under infra/private/ (webpack). Update path references accordingly.

Co-authored-by: Grok <grok@x.ai>
Point README, architecture, development, and agent module maps at
infra/global and infra/private. Refresh command examples and config
headers for docker, ansible, serverless, Azure Pipelines, and related
tooling so they match the new layout.

Co-authored-by: Grok <grok@x.ai>
Treat the WordPress theme scaffold as developer-only tooling under
infra/private/wordpress and update docs/path headers accordingly.

Co-authored-by: Grok <grok@x.ai>
Move managed cloud static-host configs from infra/global/cloud to
infra/cloud and refresh docs, command examples, and config path headers.

Co-authored-by: Grok <grok@x.ai>
Populate infra/server/nginx with a main config and github-pages vhost,
and infra/server/proxy with Envoy reverse-proxy bootstraps, plus READMEs
and development command pointers.

Co-authored-by: Grok <grok@x.ai>
Complete the project-structure diagram so cloud and server sit under
infra alongside global and private.

Co-authored-by: Grok <grok@x.ai>
Introduce the polyglot island workstream for React/Vue/Astro/Aurelia,
GraphQL/Apollo, and WASM, update the master ROADMAP to session R4 with
gate G6, and cross-link simulations and infrastructure quality hooks.

Co-authored-by: Grok <grok@x.ai>
Replace react-hook-form with @tanstack/react-form in
src/libraries/form/useCustomForm.ts and update package dependencies.

Co-authored-by: Grok <grok@x.ai>
Move .eslintrc.json into eslint/ and next.config.js plus next-env.d.ts
into next/, with thin root re-exports so next lint and the Next CLI keep
discovering config at the package root.

Co-authored-by: Grok <grok@x.ai>
Move stack/eslint and stack/next out of the repo root and keep thin
root re-exports so Next CLI and ESLint discovery continue to work.

Co-authored-by: Grok <grok@x.ai>
Move island routes from src/pages into src/frameworks/astro/pages and
point astro.config srcDir at the framework tree; rebuild public
astro-island assets; update MFP roadmap and changelog.

Co-authored-by: Grok <grok@x.ai>
Move Docusaurus/TypeDoc/Storybook app from docs/website/react/ to
docs/website/ (PMF-style layout), retarget paths for one-level-up
placement, point Storybook at src/frameworks/react/components, and
merge site/app docs (README + APP.md).

Co-authored-by: Grok <grok@x.ai>
…sland

Add configs/constants/enums/graphql/hooks/interfaces/simulations/utils,
src/stories lore, libraries, frameworks/react+astro, stack/eslint+next
with root re-exports, postcss.config.cjs, Next/Astro scripts, root docs:*
delegates, and homepage Astro island embed with static/astro-island
fallback.

Co-authored-by: Grok <grok@x.ai>
Scaffold multi-framework islands under docs/website/src/frameworks:
Vue (mount + components + directives), Aurelia (mount + convergence
app + React host wrapper), and shared framework-neutral utils.

Co-authored-by: Grok <grok@x.ai>
Standalone content wrapper mirroring main-site PostWrapper/ReportWrapper:
renders HTML content, loads MathJax for typesetting, and logs island
lifecycle via shared framework utils.

Co-authored-by: Grok <grok@x.ai>
@ACFHarbinger ACFHarbinger self-assigned this Aug 9, 2026
@ACFHarbinger
ACFHarbinger merged commit c1d249c into main Aug 9, 2026
1 of 4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant